#pragma once

#include <vector>

#include "Binding/BoundStatement.hpp"

#include "DiagnosticBag.hpp"
#include "Symbols/VariableSymbol.hpp"

class BoundGlobalScope;
typedef std::shared_ptr<BoundGlobalScope> SharedBoundGlobalScope;

class BoundGlobalScope
{
public:
    SharedBoundGlobalScope            Previous;
    SharedDiagnosticBag               Diagnostics;
    std::vector<SharedVariableSymbol> Variables;
    SharedBoundStatement              Statement;

public:
    BoundGlobalScope(SharedBoundGlobalScope            previous,
                     SharedDiagnosticBag               diagnostics,
                     std::vector<SharedVariableSymbol> variables,
                     SharedBoundStatement              statement)
        : Previous(previous), Diagnostics(diagnostics), Variables(variables), Statement(statement)
    {
    }
    ~BoundGlobalScope() = default;
};
